/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package actions;

import Connexion.ConnexionCustomer;
import actions.facade.FacadeAction;
import com.opensymphony.xwork2.ActionSupport;
import java.rmi.RemoteException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.FinderException;
import miage.beans.CategoriePresentation;
import miage.beans.ClientPresentation;
import miage.beans.MagasinPresentation;
import miage.beans.ProduitPresentation;
import miage.sessions.ecom.remote.EcomAdminRemote;
import miage.sessions.ecom.remote.EcomCustomerRemote;



/**
 *
 * @author Pepito
 */


public class ProduitAction extends FacadeAction {
    
    private static EcomCustomerRemote rechercher;
    private static EcomAdminRemote adminRemote;
    private String idProduit, recherche, referenceProduit;
    private String categorieProduit;
    
    private ProduitPresentation produit;
    private List<ProduitPresentation> produits;
    private MagasinPresentation mp = new MagasinPresentation();
    private List <CategoriePresentation> listCategoriePresentation;
    private List <ProduitPresentation> listProduitByCategoriePresentation;
    private int quantiteP;
    private List <ProduitPresentation> listeProduitDansPanier;

     
    public ProduitPresentation getProduit() {
        return produit;
    }

    public void setProduit(ProduitPresentation produit) {
        this.produit = produit;
    }
    
    private String referenceP;
    public String getReferenceProduit() {
        return referenceProduit;
    }

    public void setReferenceProduit(String referenceProduit) {
        this.referenceProduit = referenceProduit;
    }

   
    public String getCategorieProduit() {
        return categorieProduit;
    }

    public void setCategorieProduit(String categorieProduit) {
        this.categorieProduit = categorieProduit;
    }

       
    public void setListCategoriePresentation(List<CategoriePresentation> listCategoriePresentation) {
        this.listCategoriePresentation = listCategoriePresentation;
    }

    //OBLIGATOIRE pour récupérer les produits de la liste
    public List<CategoriePresentation> getListCategoriePresentation() {
        return listCategoriePresentation;
    }

    public List<ProduitPresentation> getListProduitByCategoriePresentation() {
        return listProduitByCategoriePresentation;
    }

    public void setListProduitByCategoriePresentation(List<ProduitPresentation> listProduitByCategoriePresentation) {
        this.listProduitByCategoriePresentation = listProduitByCategoriePresentation;
    }
    
     public void setRecherche(String recherche){
         this.recherche = recherche;
     }
     public String getRecherche(){
         return recherche;
     }
     public List<ProduitPresentation> getProduits(){
         return produits;
     }
     public void setProduits(List<ProduitPresentation> produits){
         this.produits = produits;
     }
     
     
    //Les méthodes d'actions

    public int getQuantiteP() {
        return quantiteP;
    }

    public void setQuantiteP(int quantiteP) {
        this.quantiteP = quantiteP;
    }
 
    
    public String getAllProduitByCategorie(){
        rechercher = ConnexionCustomer.connectionServerBean();
        System.out.println(categorieProduit);
        try {  
            listProduitByCategoriePresentation=rechercher.getAllProduitByCategorie(categorieProduit);
        } catch (FinderException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "success";
    }
     
    public String getIdProduit(){
     return idProduit;
    }
     
    public void setIdProduit(String idProduit){
     this.idProduit=idProduit;
    }

    public String getReferenceP() {
        return referenceP;
    }

    public void setReferenceP(String referenceP) {
        this.referenceP = referenceP;
    }
    
    public String getProduitPourPanier(){
        rechercher = ConnexionCustomer.connectionServerBean();

        produit = new ProduitPresentation();
        try {
            produit= rechercher.getProduitByReferenceProduit(referenceP);
        } catch (FinderException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        /*
         * rechercher.update produit par la nouvelle quantite. à mettre lors de la commande
         */
        produit.setQuantite(quantiteP);
        rechercher.addProduitInCart(produit);
        System.out.println(rechercher.nombreProduitInCart());
        int a = rechercher.nombreProduitInCart();
        System.out.println("nb produit dans panier : "+a);
        return "success";
    }
    public String getNombreProduitDansPanier(){
        System.out.println("get nbre produit dans panier");
        rechercher = ConnexionCustomer.connectionServerBean();
        this.nbProduit = rechercher.nombreProduitInCart();
        System.out.println("sortie du retour du nombre de produit dans panier");
        System.out.println("nbProduit : "+nbProduit);
        return "success";
    }
    public String getListCategorie(){
        //try {
        System.out.println("methode getListCategorie");
            rechercher = ConnexionCustomer.connectionServerBean();
        try {
            getNombreProduitDansPanier();
            listCategoriePresentation=rechercher.getAllCategorie();
            return "success";
        } catch (FinderException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
            return "input";
        } catch (RemoteException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
            return "input";
        }
            //return le nombre de produit actuellement dans le panier
            
        //} 
        /*catch (FinderException ex) {
            Logger.getLogger(AccueilAction.class.getName()).log(Level.SEVERE, null, ex);
            return "input";
        } catch (RemoteException ex) {
            Logger.getLogger(AccueilAction.class.getName()).log(Level.SEVERE, null, ex);
            return "input";
        }*/
      
    }
    public String getArticledansPanier(){
        System.out.println("getArticleDANSpANIER");
        rechercher = ConnexionCustomer.connectionServerBean();
        System.out.println("caddie contient  : "+rechercher.nombreProduitInCart() );
        listeProduitDansPanier = rechercher.getProduitDuPanier();
        return "success";
    }
    public String getFicheProduit(){
        System.out.println("methode getficheproduit");
        rechercher = ConnexionCustomer.connectionServerBean();
        System.out.println(referenceProduit);
        try {
            produit=rechercher.getProduitByReferenceProduit(referenceProduit);
        } catch (FinderException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println(produit.getNom_produit());
        return "success";
    }
      
    @Override
    // toujours un succès !
    public String execute( ) {
        System.out.println("methode exécute");
       rechercher = ConnexionCustomer.connectionServerBean();
        try {
            produits = rechercher.getAllProduitByName(recherche);
        } catch (FinderException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(ProduitAction.class.getName()).log(Level.SEVERE, null, ex);
        }
       System.out.println("valeur rechercher dans execute: "+recherche);
       System.out.println("recherche ok en cours");
       return ActionSupport.SUCCESS;
    }
    
   
}



    
   

    

    
    
   

   
     
  
